/* 
 * File:   Configuracion.cpp
 * Author: fibrizo
 * 
 * Created on 4 de junio de 2014, 20:00
 */

#include <stddef.h>  // defines NULL
#include "server_Configuracion.h"
#include <iostream>

using std::cout;
using std::endl;

/********************************************************************/
/*                    CONSTRUCCION DE LA INSTANCIA                  */
/********************************************************************/

// Global static pointer used to ensure a single instance of the class.
Configuracion* Configuracion::instancia = NULL; 
 
/** This function is called to create an instance of the class.
    Calling the constructor publicly is not allowed. The constructor
    is private and is only called by this Instance function.
*/

Configuracion::Configuracion() {
}

Configuracion::Configuracion(Configuracion const&) {
}

/********************************************************************/
/*                          METODOS DE CLASE                        */
/********************************************************************/

void Configuracion::newConfiguracion()
{
     if (!instancia)   // Only allow one instance of class to be generated.
       instancia = new Configuracion;
}

/********************************************************************/
/********************************************************************/

Configuracion* Configuracion::getConfiguracion()
{
    return instancia;
}

/********************************************************************/
/*                              GETTERS                             */
/********************************************************************/

int Configuracion::getAlcanceBomba()
{
    if (instancia)   // Only allow one instance of class to be generated.
        return instancia->alcance;
    throw "No habia una instancia creada de Configuracion";
}

/********************************************************************/
/********************************************************************/

float Configuracion::getDesplazamientoBomberman() {
    if (instancia)   // Only allow one instance of class to be generated.
        return instancia->desplazamientoBomberman;
    throw "No habia una instancia creada de Configuracion";
}

/********************************************************************/
/********************************************************************/

float Configuracion::getDesplazamientoZombieVerde() {
    if (instancia)   // Only allow one instance of class to be generated.
        return instancia->desplazamientoZombieVerde;
    throw "No habia una instancia creada de Configuracion";
}

/********************************************************************/
/********************************************************************/

float Configuracion::getDesplazamientoDisparo() {
    if (instancia)   // Only allow one instance of class to be generated.
        return instancia->desplazamientoDisparo;
    throw "No habia una instancia creada de Configuracion";
}

/********************************************************************/
/********************************************************************/

int Configuracion::getTiempoDetonacionBomba() {
    if (instancia)   // Only allow one instance of class to be generated.
        return instancia->tiempoDetonacionBomba;
    throw "No habia una instancia creada de Configuracion";
}

/********************************************************************/
/********************************************************************/

float Configuracion::getTiempoRefrescoJuego() {
    if (instancia)   // Only allow one instance of class to be generated.
        return instancia->tiempoRefresco;
    throw "No habia una instancia creada de Configuracion";
}

/********************************************************************/
/********************************************************************/

int Configuracion::getTiempoRegeneracionBomba() {
    if (instancia)   // Only allow one instance of class to be generated.
        return instancia->tiempoRegeneracionBomba;
    throw "No habia una instancia creada de Configuracion";
}

/********************************************************************/
/********************************************************************/

int Configuracion::getTamanioMapa() {
    if (instancia)   // Only allow one instance of class to be generated.
        return instancia->tamanioMapa;
    throw "No habia una instancia creada de Configuracion";
}

/********************************************************************/
/*                              SETTERS                             */
/********************************************************************/

void Configuracion::setAlcanceBomba(int alcance)
{
    if (instancia)   // Only allow one instance of class to be generated.
        instancia->alcance = alcance;
}

/********************************************************************/
/********************************************************************/

void Configuracion::setDesplazamientoZombieVerde(float tiempo)
{
     if (instancia)   // Only allow one instance of class to be generated.
        instancia->desplazamientoZombieVerde = tiempo;
}

/********************************************************************/
/********************************************************************/

void Configuracion::setDesplazamientoBomberman(float tiempo)
{
     if (instancia)   // Only allow one instance of class to be generated.
        instancia->desplazamientoBomberman = tiempo;
}

/********************************************************************/
/********************************************************************/

void Configuracion::setDesplazamientoDisparo(float tiempo)
{
     if (instancia)   // Only allow one instance of class to be generated.
        instancia->desplazamientoDisparo = tiempo;
}

/********************************************************************/
/********************************************************************/

void Configuracion::setTamanioMapa(int tamanio)
{
     if (instancia)   // Only allow one instance of class to be generated.
        instancia->tamanioMapa = tamanio;
}

/********************************************************************/
/********************************************************************/

void Configuracion::setTiempoRegeneracionBomba(int tiempo)
{
     if (instancia)   // Only allow one instance of class to be generated.
        instancia->tiempoRegeneracionBomba = tiempo;
}

/********************************************************************/
/********************************************************************/

void Configuracion::setTiempoRefrescoJuego(float tiempo)
{
     if (instancia)   // Only allow one instance of class to be generated.
        instancia->tiempoRefresco = tiempo;
}

/********************************************************************/
/********************************************************************/

void Configuracion::setTiempoDetonacionBomba(int tiempo)
{
     if (instancia)   // Only allow one instance of class to be generated.
        instancia->tiempoDetonacionBomba = tiempo;
}



/********************************************************************/
/*                      DESTRUCCION DE CONFIGURACION                */
/********************************************************************/

Configuracion::~Configuracion() {
}

void Configuracion::destroyConfiguracion() {
	
    if (instancia)
        delete instancia;
        instancia = NULL;
}

